package review;

/**
 * 10! = 10*9*8*7*6*5*4*3*2*1 的和
 *
 */
public class 求阶乘 {

    /**
     * 方法一：使用循环
     */
    public static int jieChengOne(int n) {
        int i = n;
        int sum = 1;
        // 可以优化
//        while (i <= 10) {
//            sum *= i;
//            i++;
//        }
        // 可以一次走两次，或者多次，减少循环次数
        while (i > 0) {
            sum *= i * (i - 1);
            i -= 2;
        }
        return sum;
    }

    /**
     * 方法二：使用递归
     */
    public static int jieChenTwo(int n) {
        if(n <= 1) {
            return 1;
        }
        return n * jieChenTwo(n - 1);
    }

    public static void main(String[] args) {
        int i = jieChenTwo(10);
        System.out.println(i);
    }
}
